home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Applications 1996 May / SGI IRIX 6.2 Applications 1996 May.iso / dist / impr_dev.idb / usr / include / Sgm / PrintOptionPanel.h.z / PrintOptionPanel.h
C/C++ Source or Header  |  1996-05-06  |  5KB  |  145 lines

  1. /**************************************************************************
  2.  *
  3.  *           Copyright (c)    1993 Silicon Graphics, Inc.
  4.  *            All Rights Reserved
  5.  *
  6.  *       THIS    IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI
  7.  *
  8.  * The copyright notice above does not evidence any actual of intended
  9.  * publication of such source code, and is an unpublished work by Silicon
  10.  * Graphics, Inc. This material contains CONFIDENTIAL INFORMATION that is
  11.  * the property of Silicon Graphics, Inc. Any use, duplication or
  12.  * disclosure not specifically authorized by Silicon Graphics is strictly
  13.  * prohibited.
  14.  *
  15.  * RESTRICTED RIGHTS LEGEND:
  16.  *
  17.  * Use, duplication or disclosure by the Government is subject to
  18.  * restrictions as set forth in subdivision (c)(1)(ii) of the Rights in
  19.  * Technical Data and Computer Software clause at DFARS 52.227-7013,
  20.  * and/or in similar or successor clauses in the FAR, DOD or NASA FAR
  21.  * Supplement. Unpublished - rights reserved under the Copyright Laws of
  22.  * the United States. Contractor is SILICON GRAPHICS, INC., 2011 N.
  23.  * Shoreline Blvd., Mountain View, CA 94039-7311
  24.  **************************************************************************
  25.  *
  26.  * File: PrintOptionPanel.h
  27.  *
  28.  * Description: header file for the printer specific option panel handling
  29.  *    functions.
  30.  *
  31.  **************************************************************************/
  32.  
  33.  
  34. #ident "$Revision: 1.2 $"
  35.  
  36.  
  37. #ifndef _PUI_PRINTOPTIONPANEL_H_
  38. #define _PUI_PRINTOPTIONPANEL_H_
  39.  
  40.  
  41. #include <sys/types.h>
  42.  
  43.  
  44. /* Callback reasons */
  45.  
  46. #define PuiCR_OPTION_NONE    0
  47. #define PuiCR_OPTION_ERROR    1
  48. #define PuiCR_OPTION_MAP    2
  49. #define PuiCR_OPTION_DATA    3
  50. #define PuiCR_OPTION_DEATH    4
  51.  
  52. /* Callback names */
  53.  
  54. typedef enum {
  55.     PuiNoptionPanelErrorCallback,
  56.     PuiNoptionPanelMapCallback,
  57.     PuiNoptionPanelDeathCallback,
  58.     PuiNoptionPanelDataCallback
  59. } PuiOptionPanelCallbackName;
  60.  
  61. /* Callback structure and macros */
  62.  
  63. typedef struct _PuiOptionPanelCallbackStruct {
  64.     int reason;                /* Callback reason */
  65.     /* Error callback fields */
  66.     int errorCode;            /* Error code */
  67.     /* Map callback fields */
  68.     Window wid;                /* Option panel X window ID */
  69.     /* Data callback fields */
  70.     char *options;            /* Printer specific option string */
  71. } PuiOptionPanelCallbackStruct;
  72.  
  73. #define _PUI_CALLBACK_PROC(func)    \
  74.     void (func)(struct _PuiOptionPanel*, XtPointer, \
  75.         PuiOptionPanelCallbackStruct*)
  76.  
  77.  
  78. /* Printer option panel structure */
  79.  
  80. typedef struct _PuiOptionPanel {
  81.     char *name;            /* Name of the printer */
  82.     char *pathname;        /* Pathname of option panel program */ 
  83.     Widget parent;        /* Widget ID of parent */
  84.     pid_t pid;            /* Process ID of the option panel program */
  85.     int dataFd;            /* Option panel stdout data pipe */
  86.     int ptyFd;            /* Master side of the psuedo-terminal */
  87.     XtInputId inputId;        /* Xt input select ID for our pipe fd */
  88.     Window wid;            /* Option panel top level window ID */
  89.     Widget shell;        /* Shell ancestor of parent widget */
  90.     Boolean wantWID;        /* True = look for window ID in map events */
  91.     Boolean followParent;    /* True = follow parent mapping changes */
  92.     XSizeHints sizeHints;    /* Info for mapping when following parent */
  93.     XWMHints stateHints;    /* Info for mapping when following parent */
  94.     _PUI_CALLBACK_PROC(*errorCallback);    /* Error callback function */
  95.     _PUI_CALLBACK_PROC(*mapCallback);    /* Panel mapping callback */
  96.     _PUI_CALLBACK_PROC(*deathCallback);    /* Panel death callback */
  97.     _PUI_CALLBACK_PROC(*dataCallback);    /* Data available callback */
  98.     XtPointer errorClientData;    /* Error callback client data */
  99.     XtPointer mapClientData;    /* Map callback client data */
  100.     XtPointer deathClientData;    /* Death callback client data */
  101.     XtPointer dataClientData;    /* Data callback client data */
  102. } PuiOptionPanel;
  103.  
  104.  
  105. /* Option panel command line arguments structure */
  106.  
  107. typedef struct _PuiOptionPanelArgs {
  108.     char *userName;        /* User login name */
  109.     char *filenames;        /* Whitespace separated string of filenames */
  110.     char *options;        /* Printer specific option string */
  111.     char **clientXtOptions;    /* Xt client command line switches */
  112.     int numClientXtOptions;    /* Number of Xt client switches specified */
  113. } PuiOptionPanelArgs;
  114.  
  115.  
  116. /* Callback type - needs to be after option panel struct definition */
  117.  
  118. typedef _PUI_CALLBACK_PROC(PuiOptionPanelCallbackProc);
  119.  
  120.  
  121. /* Public functions */
  122.  
  123. #ifdef __cplusplus
  124. extern "C" {
  125. #endif
  126. extern Boolean    _PuiOptionPanelExists(const char *printerName);
  127. extern Boolean    _PuiOptionPanelAlive(PuiOptionPanel *panel);
  128. extern PuiOptionPanel* _PuiOptionPanelCreate(Widget parent,
  129.                 const char *printerName, Boolean followParent);
  130. extern void    _PuiOptionPanelDestroy(PuiOptionPanel *panel);
  131. extern void    _PuiOptionPanelSetCallback(PuiOptionPanel *panel,
  132.                 PuiOptionPanelCallbackName callbackName,
  133.                 PuiOptionPanelCallbackProc callbackProc,
  134.                 XtPointer clientData);
  135. extern void    _PuiOptionPanelExec(PuiOptionPanel *panel,
  136.                 const PuiOptionPanelArgs *args);
  137. extern void    _PuiOptionPanelKill(PuiOptionPanel *panel,
  138.                 Boolean notify);
  139. #ifdef __cplusplus
  140. }
  141. #endif
  142.  
  143.  
  144. #endif /* _PUI_PRINTOPTIONPANEL_H_ */
  145.